<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArP2Arm Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArP2Arm.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
<a href="classArP2Arm-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArP2Arm Class Reference<div class="ingroups"><a class="el" href="group__DeviceClasses.html">Device Interface Classes</a> &#124; <a class="el" href="group__OptionalClasses.html">Optional Classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classArP2Arm.html" title="ArP2Arm is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot mi...">ArP2Arm</a> is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot microcontroller firmware can control the original 5-DOF Pioneer 2 Arm manipulator.  
 <a href="classArP2Arm.html#details">More...</a></p>

<p><code>#include &lt;ArP2Arm.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a0fefe90aabf68167d7e5450464b03beb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beb">PacketType</a> { <a class="el" href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beba95a0a8922a69c4df590759f918df528c">StatusPacket</a>, 
<a class="el" href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beba9bce11144f1826391cb4aa568cba886b">InfoPacket</a>
 }<tr class="memdesc:a0fefe90aabf68167d7e5450464b03beb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of arm packet identifiers. Used in <a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">ArP2Arm::setPacketCB()</a>.  <a href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beb">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a0fefe90aabf68167d7e5450464b03beb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a4a41ffa5c5b09876d7c90ce608bd94"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a> { <br />
&#160;&#160;<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a2ffcdb24a114a9398e330f1184366035">SUCCESS</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a85a1005ca93ede9758c36538dea59a04">ALREADY_INITED</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a9fae319150fb8796d9ab1a4feeca4b40">NOT_INITED</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94ab15664bb39dbd09b045d7783ac97372b">ROBOT_NOT_SETUP</a>, 
<br />
&#160;&#160;<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a3de7bc4503b701dd32527d740a785df1">NO_ARM_FOUND</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a4258de5e1fbd8de7ab06f94d5fb883da">COMM_FAILED</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a08528a0dec126926b58cb6c09ea1afa1">COULD_NOT_OPEN_PORT</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94aeb8005d5ac6ec1f6843cddd9f010eb6a">COULD_NOT_SET_UP_PORT</a>, 
<br />
&#160;&#160;<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a5a36990c7bdcc3db9601e545d4a88507">ALREADY_CONNECTED</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94ac5788d1174b4a16830bfb20de929d7c5">NOT_CONNECTED</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a7dd407a9cf8ca330fa1f1bc5463a589b">INVALID_JOINT</a>, 
<a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94a1a7fb3c689068b5cec3c4710daccb018">INVALID_POSITION</a>
<br />
 }<tr class="memdesc:a5a4a41ffa5c5b09876d7c90ce608bd94"><td class="mdescLeft">&#160;</td><td class="mdescRight">General error conditions possible from most of the arm related functions.  <a href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a5a4a41ffa5c5b09876d7c90ce608bd94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a635bd05c565cd4e3b2ae8ca6358c22af"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">StatusType</a> { <a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22afa11db582c277bbf10d38bfca2117341c4">StatusOff</a> =0, 
<a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22afa2a201348300a434a162245436e17b70c">StatusSingle</a> =1, 
<a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22afa7006376e59275c2ec3e16c64c6588146">StatusContinuous</a> =2
 }<tr class="memdesc:a635bd05c565cd4e3b2ae8ca6358c22af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of status packets to request for. Used in <a class="el" href="classArP2Arm.html#acbc67ecfa961741eecd892e121a644c1" title="Request the arm status packet. ">ArP2Arm::requestStatus()</a>  <a href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a635bd05c565cd4e3b2ae8ca6358c22af"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac0d88ccd84dbfa1d1a0c83d85880890e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0d88ccd84dbfa1d1a0c83d85880890e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ac0d88ccd84dbfa1d1a0c83d85880890e">ArP2Arm</a> ()</td></tr>
<tr class="memdesc:ac0d88ccd84dbfa1d1a0c83d85880890e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:ac0d88ccd84dbfa1d1a0c83d85880890e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4533fe9bd23a34f2b916a507cf53778"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ab4533fe9bd23a34f2b916a507cf53778">checkArm</a> (bool waitForResponse=true)</td></tr>
<tr class="memdesc:ab4533fe9bd23a34f2b916a507cf53778"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check to see if the arm is still connected.  <a href="#ab4533fe9bd23a34f2b916a507cf53778">More...</a><br /></td></tr>
<tr class="separator:ab4533fe9bd23a34f2b916a507cf53778"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47ad7c0c84e2ba7cefec7e6bdc58a927"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47ad7c0c84e2ba7cefec7e6bdc58a927"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a47ad7c0c84e2ba7cefec7e6bdc58a927">convertDegToTicks</a> (int joint, float pos, unsigned char *ticks)</td></tr>
<tr class="memdesc:a47ad7c0c84e2ba7cefec7e6bdc58a927"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts degrees to low level arm controller ticks. <br /></td></tr>
<tr class="separator:a47ad7c0c84e2ba7cefec7e6bdc58a927"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a907997b9b6ec05f9100fa7c8d3430a83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a907997b9b6ec05f9100fa7c8d3430a83"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a907997b9b6ec05f9100fa7c8d3430a83">convertTicksToDeg</a> (int joint, unsigned char pos, float *degrees)</td></tr>
<tr class="memdesc:a907997b9b6ec05f9100fa7c8d3430a83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts low level arm controller ticks to degrees. <br /></td></tr>
<tr class="separator:a907997b9b6ec05f9100fa7c8d3430a83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedf666de22a5e674cb39096a8532cbb0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aedf666de22a5e674cb39096a8532cbb0"></a>
virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#aedf666de22a5e674cb39096a8532cbb0">getArmVersion</a> ()</td></tr>
<tr class="memdesc:aedf666de22a5e674cb39096a8532cbb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the arm version. <br /></td></tr>
<tr class="separator:aedf666de22a5e674cb39096a8532cbb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cb23bc28fc661565c386df8c57e43e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cb23bc28fc661565c386df8c57e43e0"></a>
virtual <a class="el" href="classP2ArmJoint.html">P2ArmJoint</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a7cb23bc28fc661565c386df8c57e43e0">getJoint</a> (int joint)</td></tr>
<tr class="memdesc:a7cb23bc28fc661565c386df8c57e43e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the joints data structure. <br /></td></tr>
<tr class="separator:a7cb23bc28fc661565c386df8c57e43e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7611f41a8624861a573f1e2599de56c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7611f41a8624861a573f1e2599de56c"></a>
virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ae7611f41a8624861a573f1e2599de56c">getJointPos</a> (int joint)</td></tr>
<tr class="memdesc:ae7611f41a8624861a573f1e2599de56c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the joints position in degrees. <br /></td></tr>
<tr class="separator:ae7611f41a8624861a573f1e2599de56c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a08a0f2a2df1f209c2bfcea64e970c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a08a0f2a2df1f209c2bfcea64e970c6"></a>
virtual unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a9a08a0f2a2df1f209c2bfcea64e970c6">getJointPosTicks</a> (int joint)</td></tr>
<tr class="memdesc:a9a08a0f2a2df1f209c2bfcea64e970c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the joints position in ticks. <br /></td></tr>
<tr class="separator:a9a08a0f2a2df1f209c2bfcea64e970c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a035f81585cac7927e1d29a76394a9bf2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a035f81585cac7927e1d29a76394a9bf2"></a>
virtual <a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a035f81585cac7927e1d29a76394a9bf2">getLastStatusTime</a> ()</td></tr>
<tr class="memdesc:a035f81585cac7927e1d29a76394a9bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get when the last arm status packet came in. <br /></td></tr>
<tr class="separator:a035f81585cac7927e1d29a76394a9bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae802764f1ea7c94bdd234b548ce39367"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae802764f1ea7c94bdd234b548ce39367"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ae802764f1ea7c94bdd234b548ce39367">getMoving</a> (int joint=-1)</td></tr>
<tr class="memdesc:ae802764f1ea7c94bdd234b548ce39367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check to see if the arm is moving. <br /></td></tr>
<tr class="separator:ae802764f1ea7c94bdd234b548ce39367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afed509b2d80a73cef9bbbb706f9462ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afed509b2d80a73cef9bbbb706f9462ba"></a>
virtual <a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#afed509b2d80a73cef9bbbb706f9462ba">getRobot</a> ()</td></tr>
<tr class="memdesc:afed509b2d80a73cef9bbbb706f9462ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the robot that the arm is on. <br /></td></tr>
<tr class="separator:afed509b2d80a73cef9bbbb706f9462ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf319ff9a65a79235e49909448b36489"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf319ff9a65a79235e49909448b36489"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#aaf319ff9a65a79235e49909448b36489">getStatus</a> ()</td></tr>
<tr class="memdesc:aaf319ff9a65a79235e49909448b36489"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the two byts of status info from P2OS. <br /></td></tr>
<tr class="separator:aaf319ff9a65a79235e49909448b36489"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9baa6351a13c11dbde4439f4366e4392"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a9baa6351a13c11dbde4439f4366e4392">home</a> (int joint=-1)</td></tr>
<tr class="memdesc:a9baa6351a13c11dbde4439f4366e4392"><td class="mdescLeft">&#160;</td><td class="mdescRight">Home the arm.  <a href="#a9baa6351a13c11dbde4439f4366e4392">More...</a><br /></td></tr>
<tr class="separator:a9baa6351a13c11dbde4439f4366e4392"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a27053618b7aaf5530a827ba43bcd65"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a4a27053618b7aaf5530a827ba43bcd65">init</a> ()</td></tr>
<tr class="memdesc:a4a27053618b7aaf5530a827ba43bcd65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Init the arm class.  <a href="#a4a27053618b7aaf5530a827ba43bcd65">More...</a><br /></td></tr>
<tr class="separator:a4a27053618b7aaf5530a827ba43bcd65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a749446a7c703bfeea81de6517abf59db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a749446a7c703bfeea81de6517abf59db"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a749446a7c703bfeea81de6517abf59db">isGood</a> ()</td></tr>
<tr class="memdesc:a749446a7c703bfeea81de6517abf59db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check to see if the arm is communicating. <br /></td></tr>
<tr class="separator:a749446a7c703bfeea81de6517abf59db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e27206370aa6fb37546f9efb83d6011"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e27206370aa6fb37546f9efb83d6011"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a8e27206370aa6fb37546f9efb83d6011">isPowered</a> ()</td></tr>
<tr class="memdesc:a8e27206370aa6fb37546f9efb83d6011"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check to see if the arm is powered. <br /></td></tr>
<tr class="separator:a8e27206370aa6fb37546f9efb83d6011"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af10a7f8c9cc211be15040cfe72408664"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#af10a7f8c9cc211be15040cfe72408664">moveStep</a> (int joint, float pos, unsigned char vel=0)</td></tr>
<tr class="memdesc:af10a7f8c9cc211be15040cfe72408664"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a joint step degrees.  <a href="#af10a7f8c9cc211be15040cfe72408664">More...</a><br /></td></tr>
<tr class="separator:af10a7f8c9cc211be15040cfe72408664"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa012950d47cb4c0a776c19dcf5448aaf"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#aa012950d47cb4c0a776c19dcf5448aaf">moveStepTicks</a> (int joint, signed char pos)</td></tr>
<tr class="memdesc:aa012950d47cb4c0a776c19dcf5448aaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a joint step ticks.  <a href="#aa012950d47cb4c0a776c19dcf5448aaf">More...</a><br /></td></tr>
<tr class="separator:aa012950d47cb4c0a776c19dcf5448aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af706ed4089acec6c707c70443c6d76d3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#af706ed4089acec6c707c70443c6d76d3">moveTo</a> (int joint, float pos, unsigned char vel=0)</td></tr>
<tr class="memdesc:af706ed4089acec6c707c70443c6d76d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a joint to a position in degrees.  <a href="#af706ed4089acec6c707c70443c6d76d3">More...</a><br /></td></tr>
<tr class="separator:af706ed4089acec6c707c70443c6d76d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5bd00a6e1a45ed1828dcd850f56a9a0"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#af5bd00a6e1a45ed1828dcd850f56a9a0">moveToTicks</a> (int joint, unsigned char pos)</td></tr>
<tr class="memdesc:af5bd00a6e1a45ed1828dcd850f56a9a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a joint to a position in low level arm controller ticks.  <a href="#af5bd00a6e1a45ed1828dcd850f56a9a0">More...</a><br /></td></tr>
<tr class="separator:af5bd00a6e1a45ed1828dcd850f56a9a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0aec5f54e1ddf76d5680f95b4dc4c91"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ac0aec5f54e1ddf76d5680f95b4dc4c91">moveVel</a> (int joint, int vel)</td></tr>
<tr class="memdesc:ac0aec5f54e1ddf76d5680f95b4dc4c91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the joint to move at the given velocity.  <a href="#ac0aec5f54e1ddf76d5680f95b4dc4c91">More...</a><br /></td></tr>
<tr class="separator:ac0aec5f54e1ddf76d5680f95b4dc4c91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61c1b3d3f500d5beb8b90e37b8865dc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61c1b3d3f500d5beb8b90e37b8865dc8"></a>
virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a61c1b3d3f500d5beb8b90e37b8865dc8">park</a> ()</td></tr>
<tr class="memdesc:a61c1b3d3f500d5beb8b90e37b8865dc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Home the arm and power if off. <br /></td></tr>
<tr class="separator:a61c1b3d3f500d5beb8b90e37b8865dc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7276ace9a656f82c4eec40a0c8df117a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a7276ace9a656f82c4eec40a0c8df117a">powerOff</a> ()</td></tr>
<tr class="memdesc:a7276ace9a656f82c4eec40a0c8df117a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Power off the arm.  <a href="#a7276ace9a656f82c4eec40a0c8df117a">More...</a><br /></td></tr>
<tr class="separator:a7276ace9a656f82c4eec40a0c8df117a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a918cf76f54441d9404e06ad0a88e72e8"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a918cf76f54441d9404e06ad0a88e72e8">powerOn</a> (bool doWait=true)</td></tr>
<tr class="memdesc:a918cf76f54441d9404e06ad0a88e72e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Power on the arm.  <a href="#a918cf76f54441d9404e06ad0a88e72e8">More...</a><br /></td></tr>
<tr class="separator:a918cf76f54441d9404e06ad0a88e72e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa36ea8aed0996197d5c4db81b11526d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#aaa36ea8aed0996197d5c4db81b11526d">requestInfo</a> ()</td></tr>
<tr class="memdesc:aaa36ea8aed0996197d5c4db81b11526d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request the arm info packet.  <a href="#aaa36ea8aed0996197d5c4db81b11526d">More...</a><br /></td></tr>
<tr class="separator:aaa36ea8aed0996197d5c4db81b11526d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26560f0a101a58fdceaac708c795e0f2"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a26560f0a101a58fdceaac708c795e0f2">requestInit</a> ()</td></tr>
<tr class="memdesc:a26560f0a101a58fdceaac708c795e0f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request arm initialization.  <a href="#a26560f0a101a58fdceaac708c795e0f2">More...</a><br /></td></tr>
<tr class="separator:a26560f0a101a58fdceaac708c795e0f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbc67ecfa961741eecd892e121a644c1"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#acbc67ecfa961741eecd892e121a644c1">requestStatus</a> (<a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">StatusType</a> status)</td></tr>
<tr class="memdesc:acbc67ecfa961741eecd892e121a644c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request the arm status packet.  <a href="#acbc67ecfa961741eecd892e121a644c1">More...</a><br /></td></tr>
<tr class="separator:acbc67ecfa961741eecd892e121a644c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac380a74e9ea7d8c82ab6d9e51724010a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ac380a74e9ea7d8c82ab6d9e51724010a">setAutoParkTimer</a> (int waitSecs)</td></tr>
<tr class="memdesc:ac380a74e9ea7d8c82ab6d9e51724010a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the auto park timer value.  <a href="#ac380a74e9ea7d8c82ab6d9e51724010a">More...</a><br /></td></tr>
<tr class="separator:ac380a74e9ea7d8c82ab6d9e51724010a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6080358c6c361ba6a16b040937549534"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a6080358c6c361ba6a16b040937549534">setGripperParkTimer</a> (int waitSecs)</td></tr>
<tr class="memdesc:a6080358c6c361ba6a16b040937549534"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the gripper park timer value.  <a href="#a6080358c6c361ba6a16b040937549534">More...</a><br /></td></tr>
<tr class="separator:a6080358c6c361ba6a16b040937549534"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a778ef93c59f3febeecf672fd06907907"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a778ef93c59f3febeecf672fd06907907"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907">setPacketCB</a> (<a class="el" href="classArFunctor1.html">ArFunctor1</a>&lt; <a class="el" href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beb">PacketType</a> &gt; *func)</td></tr>
<tr class="memdesc:a778ef93c59f3febeecf672fd06907907"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the arm packet callback <br /></td></tr>
<tr class="separator:a778ef93c59f3febeecf672fd06907907"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8c55e24c8f53131dc2038fdee2e2dd2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8c55e24c8f53131dc2038fdee2e2dd2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ab8c55e24c8f53131dc2038fdee2e2dd2">setRobot</a> (<a class="el" href="classArRobot.html">ArRobot</a> *robot)</td></tr>
<tr class="memdesc:ab8c55e24c8f53131dc2038fdee2e2dd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the robot to use to talk to the arm. <br /></td></tr>
<tr class="separator:ab8c55e24c8f53131dc2038fdee2e2dd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae20cc4c064236272a235c9139fff7b43"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae20cc4c064236272a235c9139fff7b43"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ae20cc4c064236272a235c9139fff7b43">setStoppedCB</a> (<a class="el" href="classArFunctor.html">ArFunctor</a> *func)</td></tr>
<tr class="memdesc:ae20cc4c064236272a235c9139fff7b43"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the arm stopped callback. <br /></td></tr>
<tr class="separator:ae20cc4c064236272a235c9139fff7b43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c937d7e7933221e20bd341c6d58aff2"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a5c937d7e7933221e20bd341c6d58aff2">stop</a> ()</td></tr>
<tr class="memdesc:a5c937d7e7933221e20bd341c6d58aff2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the arm.  <a href="#a5c937d7e7933221e20bd341c6d58aff2">More...</a><br /></td></tr>
<tr class="separator:a5c937d7e7933221e20bd341c6d58aff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaaf0a47fa3aaa0d74a26a8fcd608f297"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#aaaf0a47fa3aaa0d74a26a8fcd608f297">uninit</a> ()</td></tr>
<tr class="memdesc:aaaf0a47fa3aaa0d74a26a8fcd608f297"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uninit the arm class.  <a href="#aaaf0a47fa3aaa0d74a26a8fcd608f297">More...</a><br /></td></tr>
<tr class="separator:aaaf0a47fa3aaa0d74a26a8fcd608f297"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9e852a463f3a4640b3ac9b276a04bdd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9e852a463f3a4640b3ac9b276a04bdd"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ad9e852a463f3a4640b3ac9b276a04bdd">~ArP2Arm</a> ()</td></tr>
<tr class="memdesc:ad9e852a463f3a4640b3ac9b276a04bdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad9e852a463f3a4640b3ac9b276a04bdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ac48d3c00dcda6b0c346cf514a5f46a0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac48d3c00dcda6b0c346cf514a5f46a0f"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ac48d3c00dcda6b0c346cf514a5f46a0f">ArmGood</a> =0x100</td></tr>
<tr class="memdesc:ac48d3c00dcda6b0c346cf514a5f46a0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for arm good state in arm status byte. <br /></td></tr>
<tr class="separator:ac48d3c00dcda6b0c346cf514a5f46a0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f7933080af12540cc5fc72275097e98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f7933080af12540cc5fc72275097e98"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a1f7933080af12540cc5fc72275097e98">ArmHoming</a> =0x800</td></tr>
<tr class="memdesc:a1f7933080af12540cc5fc72275097e98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for arm homing in arm status byte. <br /></td></tr>
<tr class="separator:a1f7933080af12540cc5fc72275097e98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d72666aabcd21cebb7c7f132a24f94c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d72666aabcd21cebb7c7f132a24f94c"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a8d72666aabcd21cebb7c7f132a24f94c">ArmInited</a> =0x200</td></tr>
<tr class="memdesc:a8d72666aabcd21cebb7c7f132a24f94c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for arm initialized in arm status byte. <br /></td></tr>
<tr class="separator:a8d72666aabcd21cebb7c7f132a24f94c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a721ec9ad9fba5ce6f944d599f5ddb742"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a721ec9ad9fba5ce6f944d599f5ddb742"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a721ec9ad9fba5ce6f944d599f5ddb742">ArmJoint1</a> =0x1</td></tr>
<tr class="memdesc:a721ec9ad9fba5ce6f944d599f5ddb742"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for joint 1 in arm status byte. <br /></td></tr>
<tr class="separator:a721ec9ad9fba5ce6f944d599f5ddb742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ac175f75bc05865c057fd9d1d281bdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ac175f75bc05865c057fd9d1d281bdf"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a7ac175f75bc05865c057fd9d1d281bdf">ArmJoint2</a> =0x2</td></tr>
<tr class="memdesc:a7ac175f75bc05865c057fd9d1d281bdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for joint 2 in arm status byte. <br /></td></tr>
<tr class="separator:a7ac175f75bc05865c057fd9d1d281bdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e1fb7f2c0d081329929583e5e0c6f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e1fb7f2c0d081329929583e5e0c6f16"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a4e1fb7f2c0d081329929583e5e0c6f16">ArmJoint3</a> =0x4</td></tr>
<tr class="memdesc:a4e1fb7f2c0d081329929583e5e0c6f16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for joint 3 in arm status byte. <br /></td></tr>
<tr class="separator:a4e1fb7f2c0d081329929583e5e0c6f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa399de960408af994dc8a3ae0c826cc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa399de960408af994dc8a3ae0c826cc3"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#aa399de960408af994dc8a3ae0c826cc3">ArmJoint4</a> =0x8</td></tr>
<tr class="memdesc:aa399de960408af994dc8a3ae0c826cc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for joint 4 in arm status byte. <br /></td></tr>
<tr class="separator:aa399de960408af994dc8a3ae0c826cc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae620435079fc72b374f9c4dc40bf6fcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae620435079fc72b374f9c4dc40bf6fcc"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ae620435079fc72b374f9c4dc40bf6fcc">ArmJoint5</a> =0x10</td></tr>
<tr class="memdesc:ae620435079fc72b374f9c4dc40bf6fcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for joint 5 in arm status byte. <br /></td></tr>
<tr class="separator:ae620435079fc72b374f9c4dc40bf6fcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab97c670b1b1ad042b138e30ce289931c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab97c670b1b1ad042b138e30ce289931c"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ab97c670b1b1ad042b138e30ce289931c">ArmJoint6</a> =0x20</td></tr>
<tr class="memdesc:ab97c670b1b1ad042b138e30ce289931c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for joint 6 in arm status byte. <br /></td></tr>
<tr class="separator:ab97c670b1b1ad042b138e30ce289931c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad78fa5c42e06c7f02b4ece45e14a15dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad78fa5c42e06c7f02b4ece45e14a15dc"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#ad78fa5c42e06c7f02b4ece45e14a15dc">ArmPower</a> =0x400</td></tr>
<tr class="memdesc:ad78fa5c42e06c7f02b4ece45e14a15dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit for arm powered on in arm status byte. <br /></td></tr>
<tr class="separator:ad78fa5c42e06c7f02b4ece45e14a15dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6afea03f0ce9cf6c8b13d3422183f37e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6afea03f0ce9cf6c8b13d3422183f37e"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArP2Arm.html#a6afea03f0ce9cf6c8b13d3422183f37e">NumJoints</a> =6</td></tr>
<tr class="memdesc:a6afea03f0ce9cf6c8b13d3422183f37e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of joints that the arm has. <br /></td></tr>
<tr class="separator:a6afea03f0ce9cf6c8b13d3422183f37e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:aaaa22961705b1f156224d63e98115e5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaaa22961705b1f156224d63e98115e5a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>armPacketHandler</b> (<a class="el" href="classArRobotPacket.html">ArRobotPacket</a> *packet)</td></tr>
<tr class="separator:aaaa22961705b1f156224d63e98115e5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebfc82ae358da4c3f8e4920c6b1c47bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebfc82ae358da4c3f8e4920c6b1c47bf"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmAutoPark</b> (int waitSecs)</td></tr>
<tr class="separator:aebfc82ae358da4c3f8e4920c6b1c47bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44e4eac5f4ecc9739aa552d3567b893b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44e4eac5f4ecc9739aa552d3567b893b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmCheckArm</b> ()</td></tr>
<tr class="separator:a44e4eac5f4ecc9739aa552d3567b893b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcb78f56830b94e5c43d4f7c598e96b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcb78f56830b94e5c43d4f7c598e96b1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmGripperPark</b> (int waitSecs)</td></tr>
<tr class="separator:abcb78f56830b94e5c43d4f7c598e96b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94eb062fef34d5849c473e9ccc69755b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94eb062fef34d5849c473e9ccc69755b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmHome</b> (unsigned char joint=0xff)</td></tr>
<tr class="separator:a94eb062fef34d5849c473e9ccc69755b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a841af14a4f5a5ed81c9c273ebdb13e2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a841af14a4f5a5ed81c9c273ebdb13e2a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmInfo</b> ()</td></tr>
<tr class="separator:a841af14a4f5a5ed81c9c273ebdb13e2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30d99724499d94b70777d9d205fa88ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30d99724499d94b70777d9d205fa88ee"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmInit</b> ()</td></tr>
<tr class="separator:a30d99724499d94b70777d9d205fa88ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41a0593f04451fc7a2ec3b891aedfe85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41a0593f04451fc7a2ec3b891aedfe85"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmPark</b> ()</td></tr>
<tr class="separator:a41a0593f04451fc7a2ec3b891aedfe85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2f5cb6b95cbe4c526b63251522489ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2f5cb6b95cbe4c526b63251522489ac"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmPos</b> (unsigned char joint, unsigned char pos)</td></tr>
<tr class="separator:aa2f5cb6b95cbe4c526b63251522489ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdc31e5550f1dc58ef69d17747156d91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdc31e5550f1dc58ef69d17747156d91"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmPower</b> (bool on)</td></tr>
<tr class="separator:abdc31e5550f1dc58ef69d17747156d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a927082a19605fb6fba4973b5f1bfc5c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a927082a19605fb6fba4973b5f1bfc5c3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmSpeed</b> (unsigned char joint, unsigned char speed)</td></tr>
<tr class="separator:a927082a19605fb6fba4973b5f1bfc5c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3d3bc2ef5bf3043c5f5848c65db6550"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3d3bc2ef5bf3043c5f5848c65db6550"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmStats</b> (<a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">StatusType</a> stats=<a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22afa2a201348300a434a162245436e17b70c">StatusSingle</a>)</td></tr>
<tr class="separator:aa3d3bc2ef5bf3043c5f5848c65db6550"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3af312a2a8895d1dc65a23e570c7d25b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3af312a2a8895d1dc65a23e570c7d25b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>comArmStop</b> (unsigned char joint=0xff)</td></tr>
<tr class="separator:a3af312a2a8895d1dc65a23e570c7d25b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a198311677bf11458c7c2e05f71d260e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a198311677bf11458c7c2e05f71d260e8"></a>
<a class="el" href="classArRetFunctorC.html">ArRetFunctorC</a>&lt; <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">State</a>, <a class="el" href="classArP2Arm.html">ArP2Arm</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myAriaUninitCB</b></td></tr>
<tr class="separator:a198311677bf11458c7c2e05f71d260e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d4cacaea955fb7794aab63aef357676"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d4cacaea955fb7794aab63aef357676"></a>
<a class="el" href="classArRetFunctor1C.html">ArRetFunctor1C</a>&lt; bool, <a class="el" href="classArP2Arm.html">ArP2Arm</a>, <a class="el" href="classArRobotPacket.html">ArRobotPacket</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myArmPacketHandler</b></td></tr>
<tr class="separator:a8d4cacaea955fb7794aab63aef357676"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfc6e02ac20d5f2f42e58e09ac2f6cb7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfc6e02ac20d5f2f42e58e09ac2f6cb7"></a>
<a class="el" href="classArSerialConnection.html">ArSerialConnection</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myCon</b></td></tr>
<tr class="separator:acfc6e02ac20d5f2f42e58e09ac2f6cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90c47e0ce8939670bd8e4da813665924"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90c47e0ce8939670bd8e4da813665924"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myInited</b></td></tr>
<tr class="separator:a90c47e0ce8939670bd8e4da813665924"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24a9de32173894d5c774b8bc2edda5ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24a9de32173894d5c774b8bc2edda5ca"></a>
<a class="el" href="classP2ArmJoint.html">P2ArmJoint</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myJoints</b> [6]</td></tr>
<tr class="separator:a24a9de32173894d5c774b8bc2edda5ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addec545379ec758b78926da86f66837e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addec545379ec758b78926da86f66837e"></a>
<a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastInfoTime</b></td></tr>
<tr class="separator:addec545379ec758b78926da86f66837e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fae35bbea551cc5667ab110a76ccb66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fae35bbea551cc5667ab110a76ccb66"></a>
<a class="el" href="classArTypes.html#a0efae5ee63aec92972d78ecaffdbfcea">ArTypes::UByte2</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastStatus</b></td></tr>
<tr class="separator:a5fae35bbea551cc5667ab110a76ccb66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7576b68cc7d9f188e28267a61281ba56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7576b68cc7d9f188e28267a61281ba56"></a>
<a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastStatusTime</b></td></tr>
<tr class="separator:a7576b68cc7d9f188e28267a61281ba56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acabe1cdb390caa35f383749bfca8c9d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acabe1cdb390caa35f383749bfca8c9d0"></a>
<a class="el" href="classArFunctor1.html">ArFunctor1</a>&lt; <a class="el" href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beb">PacketType</a> &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>myPacketCB</b></td></tr>
<tr class="separator:acabe1cdb390caa35f383749bfca8c9d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e5ff6ca580aa0d3d99b70e3c0b6aae4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e5ff6ca580aa0d3d99b70e3c0b6aae4"></a>
<a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myRobot</b></td></tr>
<tr class="separator:a8e5ff6ca580aa0d3d99b70e3c0b6aae4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37ac5ec8604b1828c5c06182a98d0efc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37ac5ec8604b1828c5c06182a98d0efc"></a>
<a class="el" href="classArTypes.html#a0efae5ee63aec92972d78ecaffdbfcea">ArTypes::UByte2</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myStatus</b></td></tr>
<tr class="separator:a37ac5ec8604b1828c5c06182a98d0efc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6f8d049d778e1f4217218d21f61c561"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6f8d049d778e1f4217218d21f61c561"></a>
<a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">StatusType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myStatusRequest</b></td></tr>
<tr class="separator:ac6f8d049d778e1f4217218d21f61c561"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade831edbee151f0c5e3158a7baadb716"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade831edbee151f0c5e3158a7baadb716"></a>
<a class="el" href="classArFunctor.html">ArFunctor</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myStoppedCB</b></td></tr>
<tr class="separator:ade831edbee151f0c5e3158a7baadb716"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84a56f4a3b263c3c5ccc0b2933ce1555"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84a56f4a3b263c3c5ccc0b2933ce1555"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>myVersion</b></td></tr>
<tr class="separator:a84a56f4a3b263c3c5ccc0b2933ce1555"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
Static Protected Attributes</h2></td></tr>
<tr class="memitem:aff9c4b2fc0c7c890ae882998f92c2635"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff9c4b2fc0c7c890ae882998f92c2635"></a>
static const unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>ARMINFOpac</b> =0xa1</td></tr>
<tr class="separator:aff9c4b2fc0c7c890ae882998f92c2635"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42df95f0815f526510bc033877bdf467"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42df95f0815f526510bc033877bdf467"></a>
static const unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>ARMpac</b> =0xa0</td></tr>
<tr class="separator:a42df95f0815f526510bc033877bdf467"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b5da85c6d9a450a15d62fdaa2693e51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b5da85c6d9a450a15d62fdaa2693e51"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmAutoPark</b> =80</td></tr>
<tr class="separator:a1b5da85c6d9a450a15d62fdaa2693e51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54105deba2c8036d5f8e1dcb08d8f9f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54105deba2c8036d5f8e1dcb08d8f9f1"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmCheckArm</b> =73</td></tr>
<tr class="separator:a54105deba2c8036d5f8e1dcb08d8f9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a224b561a5b7f509c3523c8229a0a33d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a224b561a5b7f509c3523c8229a0a33d7"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmGripperPark</b> =81</td></tr>
<tr class="separator:a224b561a5b7f509c3523c8229a0a33d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cae5550d0f84d3fdb072c604b8d56c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cae5550d0f84d3fdb072c604b8d56c6"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmHome</b> =75</td></tr>
<tr class="separator:a3cae5550d0f84d3fdb072c604b8d56c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a012d66d64269ba51758aca685ddb005a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a012d66d64269ba51758aca685ddb005a"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmInfo</b> =70</td></tr>
<tr class="separator:a012d66d64269ba51758aca685ddb005a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d898c3522c15482b2fc2bbd4588fffd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d898c3522c15482b2fc2bbd4588fffd"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmInit</b> =72</td></tr>
<tr class="separator:a7d898c3522c15482b2fc2bbd4588fffd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38e4e9570c2cc9c775078052c9b83a30"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38e4e9570c2cc9c775078052c9b83a30"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmPark</b> =76</td></tr>
<tr class="separator:a38e4e9570c2cc9c775078052c9b83a30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68b1800eaafd7c5ce2dd48e8125ba7be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68b1800eaafd7c5ce2dd48e8125ba7be"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmPos</b> =77</td></tr>
<tr class="separator:a68b1800eaafd7c5ce2dd48e8125ba7be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a363581c5c93848e9994025d2d0921849"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a363581c5c93848e9994025d2d0921849"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmPower</b> =74</td></tr>
<tr class="separator:a363581c5c93848e9994025d2d0921849"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6771f9a991c3fa39f9e28d3aa6a12fba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6771f9a991c3fa39f9e28d3aa6a12fba"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmSpeed</b> =78</td></tr>
<tr class="separator:a6771f9a991c3fa39f9e28d3aa6a12fba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accb42ad60bab23d937b8ab3c7024d84b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="accb42ad60bab23d937b8ab3c7024d84b"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmStats</b> =71</td></tr>
<tr class="separator:accb42ad60bab23d937b8ab3c7024d84b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56b52d42950defd2610aa7defa12ff6d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56b52d42950defd2610aa7defa12ff6d"></a>
static const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>ComArmStop</b> =79</td></tr>
<tr class="separator:a56b52d42950defd2610aa7defa12ff6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classArP2Arm.html" title="ArP2Arm is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot mi...">ArP2Arm</a> is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot microcontroller firmware can control the original 5-DOF Pioneer 2 Arm manipulator. </p>
<p>The P2 Arm is attached to the robot's microcontroller via an auxiliary serial port.</p>
<p>To use ArmP2, you must first set up an <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> and have it connect with the robot. The <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> needs to be run so that it reads and writes packets to and from server. The easiest way is <a class="el" href="group__easy.html#gac4425ceba89af5001dec83246190273a" title="Starts the instance to do processing in its own new thread. ">ArRobot::runAsync()</a> which runs the <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> in its own thread.</p>
<p>Then call <a class="el" href="classArP2Arm.html#ab8c55e24c8f53131dc2038fdee2e2dd2" title="Set the robot to use to talk to the arm. ">ArP2Arm::setRobot()</a> with <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a>, and finally initialized with ArmP2::init(). Once initialized, use the various <a class="el" href="classArP2Arm.html" title="ArP2Arm is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot mi...">ArP2Arm</a> methods to power the P2 Arm servos, move joints, and so on.</p>
<p>For simple examples on how to use <a class="el" href="classArP2Arm.html" title="ArP2Arm is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot mi...">ArP2Arm</a>, look in the Aria/examples directory for P2ArmSimple.cpp and P2ArmJoydrive.cpp.</p>
<p>For additional information about the original 5-DOF Pioneer 2 Arm, see the robot operations manual and the arm manual, available at <a href="http://robots.mobilerobots.com">http://robots.mobilerobots.com</a>.Arm Control class </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="armExample_8cpp-example.html#_a3">armExample.cpp</a>.</dd>
</dl></div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="a0fefe90aabf68167d7e5450464b03beb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classArP2Arm.html#a0fefe90aabf68167d7e5450464b03beb">ArP2Arm::PacketType</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Type of arm packet identifiers. Used in <a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">ArP2Arm::setPacketCB()</a>. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a0fefe90aabf68167d7e5450464b03beba95a0a8922a69c4df590759f918df528c"></a>StatusPacket&#160;</td><td class="fielddoc">
<p>The status packet type. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a0fefe90aabf68167d7e5450464b03beba9bce11144f1826391cb4aa568cba886b"></a>InfoPacket&#160;</td><td class="fielddoc">
<p>The info packet type. </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>General error conditions possible from most of the arm related functions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a2ffcdb24a114a9398e330f1184366035"></a>SUCCESS&#160;</td><td class="fielddoc">
<p>Succeded. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a85a1005ca93ede9758c36538dea59a04"></a>ALREADY_INITED&#160;</td><td class="fielddoc">
<p>The class is already initialized. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a9fae319150fb8796d9ab1a4feeca4b40"></a>NOT_INITED&#160;</td><td class="fielddoc">
<p>The class is not initialized. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94ab15664bb39dbd09b045d7783ac97372b"></a>ROBOT_NOT_SETUP&#160;</td><td class="fielddoc">
<p>The <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> class is not setup properly. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a3de7bc4503b701dd32527d740a785df1"></a>NO_ARM_FOUND&#160;</td><td class="fielddoc">
<p>The arm can not be found. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a4258de5e1fbd8de7ab06f94d5fb883da"></a>COMM_FAILED&#160;</td><td class="fielddoc">
<p>Communications has failed. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a08528a0dec126926b58cb6c09ea1afa1"></a>COULD_NOT_OPEN_PORT&#160;</td><td class="fielddoc">
<p>Could not open the communications port. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94aeb8005d5ac6ec1f6843cddd9f010eb6a"></a>COULD_NOT_SET_UP_PORT&#160;</td><td class="fielddoc">
<p>Could not setup the communications port. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a5a36990c7bdcc3db9601e545d4a88507"></a>ALREADY_CONNECTED&#160;</td><td class="fielddoc">
<p>Already connected to the arm. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94ac5788d1174b4a16830bfb20de929d7c5"></a>NOT_CONNECTED&#160;</td><td class="fielddoc">
<p>Not connected with the arm, connect first. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a7dd407a9cf8ca330fa1f1bc5463a589b"></a>INVALID_JOINT&#160;</td><td class="fielddoc">
<p>Invalid joint specified. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a5a4a41ffa5c5b09876d7c90ce608bd94a1a7fb3c689068b5cec3c4710daccb018"></a>INVALID_POSITION&#160;</td><td class="fielddoc">
<p>Invalid position specified. </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a635bd05c565cd4e3b2ae8ca6358c22af"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">ArP2Arm::StatusType</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Type of status packets to request for. Used in <a class="el" href="classArP2Arm.html#acbc67ecfa961741eecd892e121a644c1" title="Request the arm status packet. ">ArP2Arm::requestStatus()</a> </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a635bd05c565cd4e3b2ae8ca6358c22afa11db582c277bbf10d38bfca2117341c4"></a>StatusOff&#160;</td><td class="fielddoc">
<p>Stop sending status packets. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a635bd05c565cd4e3b2ae8ca6358c22afa2a201348300a434a162245436e17b70c"></a>StatusSingle&#160;</td><td class="fielddoc">
<p>Send a single status packets. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a635bd05c565cd4e3b2ae8ca6358c22afa7006376e59275c2ec3e16c64c6588146"></a>StatusContinuous&#160;</td><td class="fielddoc">
<p>Send continous packets. Once every 100ms. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ab4533fe9bd23a34f2b916a507cf53778"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::checkArm </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>waitForResponse</em> = <code>true</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check to see if the arm is still connected. </p>
<p>Requests that P2OS checks to see if the arm is still alive and immediately exits.</p>
<p>This is not a full init and differs that P2OS will still accept arm commands and the arm will not be parked. If P2OS fails to find the arm it will change the status byte accordingly and stop accepting arm related commands except for init commands. If the parameter waitForResponse is true then <a class="el" href="classArP2Arm.html#ab4533fe9bd23a34f2b916a507cf53778" title="Check to see if the arm is still connected. ">checkArm()</a> will wait the appropriate amoutn of time and check the status of the arm. If you wish to do the waiting else where the arm check sequence takes about 200ms, so the user should wait 300ms then send a <a class="el" href="classArP2Arm.html#acbc67ecfa961741eecd892e121a644c1" title="Request the arm status packet. ">ArP2Arm::requestStatus()</a> to get the results of the check arm request. Since there is a very noticable time delay, the user should use the <a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">ArP2Arm::setPacketCB()</a> to set a callback so the user knows when the packet has been received.</p>
<p>This can be usefull for telling if the arm is still alive. The arm controller can be powered on/off separately from the robot.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">waitForResponse</td><td>cause the function to block until their is a response </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#a26560f0a101a58fdceaac708c795e0f2" title="Request arm initialization. ">requestInit</a> </dd>
<dd>
<a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">setPacketCB</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a9baa6351a13c11dbde4439f4366e4392"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::home </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>joint</em> = <code>-1</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Home the arm. </p>
<p>Tells the arm to go to the home position.</p>
<p>While the arm is homing, the status byte will reflect it with the <a class="el" href="classArP2Arm.html#a1f7933080af12540cc5fc72275097e98" title="Bit for arm homing in arm status byte. ">ArP2Arm::ArmHoming</a> flag. If joint is set to -1, then all the joints will be homed at a safe speed. If a single joint is specified, that joint will be told to go to its home position at the current speed its set at.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">joint</td><td>home only that joint </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4a27053618b7aaf5530a827ba43bcd65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::init </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Init the arm class. </p>
<p>Initialize the P2 Arm class.</p>
<p>This must be called before anything else. The <a class="el" href="classArP2Arm.html#ab8c55e24c8f53131dc2038fdee2e2dd2" title="Set the robot to use to talk to the arm. ">setRobot()</a> must be called to let <a class="el" href="classArP2Arm.html" title="ArP2Arm is the interface to the AROS/P2OS-based Pioneer 2 Arm servers, by means of which the robot mi...">ArP2Arm</a> know what instance of an <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> to use. It talks to the robot and makes sure that there is an arm on it and it is in a good condition. The AROS/P2OS arm servers take care of AUX port serial communications with the P2 Arm controller. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="armExample_8cpp-example.html#a14">armExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="af10a7f8c9cc211be15040cfe72408664"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::moveStep </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>joint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>vel</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Move a joint step degrees. </p>
<p>Step the joint pos degrees from its current position at the given speed.</p>
<p>If vel is 0, then the currently set speed will be used.</p>
<p>See <a class="el" href="classArP2Arm.html#af5bd00a6e1a45ed1828dcd850f56a9a0" title="Move a joint to a position in low level arm controller ticks. ">ArP2Arm::moveToTicks()</a> for a description of how positions are defined. See <a class="el" href="classArP2Arm.html#ac0aec5f54e1ddf76d5680f95b4dc4c91" title="Set the joint to move at the given velocity. ">ArP2Arm::moveVel()</a> for a description of how speeds are defined.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">joint</td><td>the joint to move </td></tr>
    <tr><td class="paramname">pos</td><td>the position in degrees to step </td></tr>
    <tr><td class="paramname">vel</td><td>the speed at which to move. 0 will use the currently set speed </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#af706ed4089acec6c707c70443c6d76d3" title="Move a joint to a position in degrees. ">moveTo</a> </dd>
<dd>
<a class="el" href="classArP2Arm.html#ac0aec5f54e1ddf76d5680f95b4dc4c91" title="Set the joint to move at the given velocity. ">moveVel</a> </dd></dl>

</div>
</div>
<a class="anchor" id="aa012950d47cb4c0a776c19dcf5448aaf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::moveStepTicks </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>joint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">signed char&#160;</td>
          <td class="paramname"><em>pos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Move a joint step ticks. </p>
<p>Move the joint pos ticks from its current position.</p>
<p>A tick is the arbitrary position value that the arm controller uses. The arm controller uses a single unsigned byte to represent all the possible positions in the range of the servo for each joint. So the range of ticks is 0-255 which is mapped to the physical range of the servo. Due to the design of the arm, certain joints range are limited by the arm itself. P2OS will bound the position to physical range of each joint. This is a lower level of controlling the arm position than using <a class="el" href="classArP2Arm.html#af706ed4089acec6c707c70443c6d76d3" title="Move a joint to a position in degrees. ">ArP2Arm::moveTo()</a>. <a class="el" href="classArP2Arm.html#af10a7f8c9cc211be15040cfe72408664" title="Move a joint step degrees. ">ArP2Arm::moveStep()</a> uses a conversion factor which converts degrees to ticks.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">joint</td><td>the joint to move </td></tr>
    <tr><td class="paramname">pos</td><td>the position, in ticks, to move to </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#af10a7f8c9cc211be15040cfe72408664" title="Move a joint step degrees. ">moveStep</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af706ed4089acec6c707c70443c6d76d3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::moveTo </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>joint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>vel</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Move a joint to a position in degrees. </p>
<p>Move the joint to the position at the given speed.</p>
<p>If vel is 0, then the currently set speed will be used. The position is in degrees. Each joint has about a +-90 degree range, but they all differ due to the design.</p>
<p>See <a class="el" href="classArP2Arm.html#af5bd00a6e1a45ed1828dcd850f56a9a0" title="Move a joint to a position in low level arm controller ticks. ">ArP2Arm::moveToTicks()</a> for a description of how positions are defined. See <a class="el" href="classArP2Arm.html#ac0aec5f54e1ddf76d5680f95b4dc4c91" title="Set the joint to move at the given velocity. ">ArP2Arm::moveVel()</a> for a description of how speeds are defined.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">joint</td><td>the joint to move </td></tr>
    <tr><td class="paramname">pos</td><td>the position in degrees to move to </td></tr>
    <tr><td class="paramname">vel</td><td>the speed at which to move. 0 will use the currently set speed </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#af5bd00a6e1a45ed1828dcd850f56a9a0" title="Move a joint to a position in low level arm controller ticks. ">moveToTicks</a> </dd>
<dd>
<a class="el" href="classArP2Arm.html#ac0aec5f54e1ddf76d5680f95b4dc4c91" title="Set the joint to move at the given velocity. ">moveVel</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af5bd00a6e1a45ed1828dcd850f56a9a0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::moveToTicks </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>joint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>pos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Move a joint to a position in low level arm controller ticks. </p>
<p>Move the joint to the given position in ticks.</p>
<p>A tick is the arbitrary position value that the arm controller uses. The arm controller uses a single unsigned byte to represent all the possible positions in the range of the servo for each joint. So the range of ticks is 0-255 which is mapped to the physical range of the servo. Due to the design of the arm, certain joints range are limited by the arm itself. P2OS will bound the position to physical range of each joint. This is a lower level of controlling the arm position than using <a class="el" href="classArP2Arm.html#af706ed4089acec6c707c70443c6d76d3" title="Move a joint to a position in degrees. ">ArP2Arm::moveTo()</a>. <a class="el" href="classArP2Arm.html#af706ed4089acec6c707c70443c6d76d3" title="Move a joint to a position in degrees. ">ArP2Arm::moveTo()</a> uses a conversion factor which converts degrees to ticks.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">joint</td><td>the joint to move </td></tr>
    <tr><td class="paramname">pos</td><td>the position, in ticks, to move to </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#af706ed4089acec6c707c70443c6d76d3" title="Move a joint to a position in degrees. ">moveTo</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="armExample_8cpp-example.html#a31">armExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac0aec5f54e1ddf76d5680f95b4dc4c91"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::moveVel </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>joint</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>vel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the joint to move at the given velocity. </p>
<p>Set the joints velocity.</p>
<p>The arm controller has no way of controlling the speed of the servos in the arm. So to control the speed of the arm, P2OS will incrementaly send a string of position commands to the arm controller to get the joint to move to its destination. To vary the speed, the amount of time to wait between each point in the path is varied. The velocity parameter is simply the number of milliseconds to wait between each point in the path. 0 is the fastest and 255 is the slowest. A reasonable range is around 10-40. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">joint</td><td>the joint to move </td></tr>
    <tr><td class="paramname">vel</td><td>the velocity to move at </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7276ace9a656f82c4eec40a0c8df117a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::powerOff </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Power off the arm. </p>
<p>Powers off the arm.</p>
<p>This should only be called when the arm is in a good position to power off. Due to the design, it will go limp when the power is turned off. A more safe way to power off the arm is to use the <a class="el" href="classArP2Arm.html#a61c1b3d3f500d5beb8b90e37b8865dc8" title="Home the arm and power if off. ">ArP2Arm::park()</a> function. Which will home the arm, then power if off. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#a61c1b3d3f500d5beb8b90e37b8865dc8" title="Home the arm and power if off. ">park</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a918cf76f54441d9404e06ad0a88e72e8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::powerOn </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>doSleep</em> = <code>true</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Power on the arm. </p>
<p>Powers on the arm.</p>
<p>The arm will shake for up to 2 seconds after powering on. If the arm is told to move before it stops shaking, that vibration can be amplified by moving. The default is to wait the 2 seconds for the arm to settle down. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">doSleep</td><td>if true, sleeps 2 seconds to wait for the arm to stop shaking </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="armExample_8cpp-example.html#a22">armExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="aaa36ea8aed0996197d5c4db81b11526d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::requestInfo </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Request the arm info packet. </p>
<p>Requests the arm info packet from P2OS and immediately returns.</p>
<p>This packet will be sent during the next 100ms cycle of P2OS. Since there is a very noticable time delay, the user should use the <a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">ArP2Arm::setPacketCB()</a> to set a callback so the user knows when the packet has been received. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">setPacketCB</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a26560f0a101a58fdceaac708c795e0f2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::requestInit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Request arm initialization. </p>
<p>Requests that P2OS initialize the arm and immediately returns.</p>
<p>The arm initialization procedure takes about 700ms to complete and a little more time for the status information to be relayed back to the client. Since there is a very noticable time delay, the user should use the <a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">ArP2Arm::setPacketCB()</a> to set a callback so the user knows when the arm info packet has been received. Then wait about 800ms, and send a <a class="el" href="classArP2Arm.html#acbc67ecfa961741eecd892e121a644c1" title="Request the arm status packet. ">ArP2Arm::requestStatus()</a> to get the results of the init request. While the init is proceding, P2OS will ignore all arm related commands except requests for arm status and arm info packets.</p>
<p><a class="el" href="classArP2Arm.html#ab4533fe9bd23a34f2b916a507cf53778" title="Check to see if the arm is still connected. ">ArP2Arm::checkArm()</a> can be used to periodicly check to make sure that the arm controller is still alive and responding.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#ab4533fe9bd23a34f2b916a507cf53778" title="Check to see if the arm is still connected. ">checkArm</a> </dd>
<dd>
<a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">setPacketCB</a> </dd></dl>

</div>
</div>
<a class="anchor" id="acbc67ecfa961741eecd892e121a644c1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::requestStatus </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArP2Arm.html#a635bd05c565cd4e3b2ae8ca6358c22af">StatusType</a>&#160;</td>
          <td class="paramname"><em>status</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Request the arm status packet. </p>
<p>Requests the arm status packet from P2OS and immediately returns.</p>
<p>This packet will be sent during the next 100ms cycle of P2OS. Since there is a very noticable time delay, the user should use the <a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">ArP2Arm::setPacketCB()</a> to set a callback so the user knows when the packet has been received. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classArP2Arm.html#a778ef93c59f3febeecf672fd06907907" title="set the arm packet callback ">setPacketCB</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="armExample_8cpp-example.html#a23">armExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac380a74e9ea7d8c82ab6d9e51724010a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::setAutoParkTimer </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>waitSecs</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the auto park timer value. </p>
<p>P2OS will automaticly park the arm if it gets no arm related packets after waitSecs.</p>
<p>This is to help protect the arm when the program looses connection with P2OS. Set the value to 0 to disable this timer. Default wait is 10 minutes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">waitSecs</td><td>seconds to wait till parking the arm when idle </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6080358c6c361ba6a16b040937549534"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::setGripperParkTimer </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>waitSecs</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the gripper park timer value. </p>
<p>P2OS/AROS automatically park the gripper after its been closed for more than waitSecs.</p>
<p>The gripper servo can overheat and burnout if it is holding something for more than 10 minutes. Care must be taken to ensure that this does not happen. If you wish to manage the gripper yourself, you can disable this timer by setting it to 0.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">waitSecs</td><td>seconds to wait till parking the gripper once it has begun to grip something </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5c937d7e7933221e20bd341c6d58aff2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::stop </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stop the arm. </p>
<p>Stop the arm from moving.</p>
<p>This overrides all other actions except for the arms initilization sequence. </p>

</div>
</div>
<a class="anchor" id="aaaf0a47fa3aaa0d74a26a8fcd608f297"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArP2Arm.html#a5a4a41ffa5c5b09876d7c90ce608bd94">ArP2Arm::State</a> ArP2Arm::uninit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Uninit the arm class. </p>
<p>Uninitialize the arm class.</p>
<p>This simply asks the arm to park itself and cleans up its internal state. To completely uninitialize the P2 Arm itself have the <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> disconnect from P2OS. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArP2Arm.h</li>
<li>ArP2Arm.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArP2Arm.html">ArP2Arm</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
